<?php

class Object{

private $id;
public function __construct($id){
$this->id = $id;

}

public function getId(){
return $this->id;
}

public function setId($id){
 $this->id=$id;
}

}

class Pessoa extends Object{

private $nome;
private $idade;
public function __construct($nome,$idade){
$this->nome = $nome;
$this->idade = $idade;

}

public static function construct($array){
return new Pessoa( $array['nome'], $array['idade']);

}

public function getNome(){
return $this->nome;
}

public function setNome($nome){
 $this->nome=$nome;
}

public function getIdade(){
return $this->idade;
}

public function setIdade($idade){
 $this->idade=$idade;
}
public function equals($object){
if($object instanceof Pessoa){

if($this->nome!=$object->nome){
return false;

}

if($this->idade!=$object->idade){
return false;

}

return true;

}
else{
return false;
}

}
public function toString(){

 return "  [nome:" .$this->nome. "]  [idade:" .$this->idade. "]  " ;
}
public function toArray(){

  return (array) $this;
}

}
$array = array();

$array['nome'] = "Ivan";
$array['idade'] = 24;

$a = new Pessoa('Ivan','26');
$b = Pessoa::construct($array);

echo $a->equals($b)."<br/>";
echo $a->getNome()."<br/>";
echo $a->toString()."<br/>";
echo $b->getNome();

print_r($a->toArray());



?>